From: Robin Lee Date: Fri, 5 May 2017 19:02:32 +0000 (+0800) Subject: libxl: u.hvm.usbdevice_list is checked for emptiness X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~2165 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=03350f1ce7398a5b2d54802efe21659bd8d03772;p=xen.git libxl: u.hvm.usbdevice_list is checked for emptiness Currently usbdevice_list is only checked for nullity. But the OCaml binding will convert empty list to a pointer to NULL, instead of a NULL pointer. That means the OCaml binding will fail to disable USB. This patch will check emptiness of usbdevice_list. And NULL is still a valid empty list. Signed-off-by: Robin Lee Acked-by: Ian Jackson Release-acked-by: Julien Grall --- diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index f8ba8599e5..44ebd7063c 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -559,9 +559,9 @@ static int libxl__build_device_model_args_old(libxl__gc *gc, } if (libxl_defbool_val(b_info->u.hvm.usb) || b_info->u.hvm.usbdevice - || b_info->u.hvm.usbdevice_list) { - if ( b_info->u.hvm.usbdevice && b_info->u.hvm.usbdevice_list ) - { + || libxl_string_list_length(&b_info->u.hvm.usbdevice_list)) { + if (b_info->u.hvm.usbdevice + && libxl_string_list_length(&b_info->u.hvm.usbdevice_list)) { LOGD(ERROR, domid, "Both usbdevice and usbdevice_list set"); return ERROR_INVAL; } @@ -1149,9 +1149,9 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, } if (libxl_defbool_val(b_info->u.hvm.usb) || b_info->u.hvm.usbdevice - || b_info->u.hvm.usbdevice_list) { - if ( b_info->u.hvm.usbdevice && b_info->u.hvm.usbdevice_list ) - { + || libxl_string_list_length(&b_info->u.hvm.usbdevice_list)) { + if (b_info->u.hvm.usbdevice + && libxl_string_list_length(&b_info->u.hvm.usbdevice_list)) { LOGD(ERROR, guest_domid, "Both usbdevice and usbdevice_list set"); return ERROR_INVAL; }